package cn.wolfcode.service;


import cn.wolfcode.domain.OrderInfo;
import cn.wolfcode.mq.OrderMQResult;

import java.util.Map;


public interface IOrderInfoService {

    /**
     * 秒杀逻辑
     * @param time          场次
     * @param seckillId     秒杀商品id
     * @param phone         用户手机号
     * @return
     */
    String doSeckill(int time, Long seckillId, Long phone);

    /**
     * 订单超时取消逻辑
     * @param orderMQResult
     */
    void timeOutcancel(OrderMQResult orderMQResult);

    /**
     * 根据订单编号查询订单信息
     * @param orderNo   订单编号
     * @return
     */
    OrderInfo find(String orderNo);

    /**
     * 在线支付业务
     * @param orderNo   订单编号
     * @param type      订单支付类型
     * @return
     */
    String payOnline(String orderNo, int type);

    /**
     * 支付成功业务逻辑 (异步回调)
     * @param params
     */
    void paySuccess(Map<String, String> params);

    /**
     * 在线支付退款流程
     * @param orderInfo 订单信息
     */
    void refundOnline(OrderInfo orderInfo);

    /**
     * 积分支付流程
     * @param orderNo   订单信息
     * @param type      订单支付类型
     */
    void payIntegral(String orderNo, int type);

    /**
     * 积分退款流程
     * @param orderInfo 
     */
    void refundIntegral(OrderInfo orderInfo);
}
